package com.aipartner.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.*;
import java.math.BigDecimal;

/**
 * VIP Package Request DTO
 * 
 * @author AI Partner Team
 * @since 2024-09-20
 */
@Data
@NoArgsConstructor
@ApiModel(description = "VIP套餐请求")
public class VipPackageRequest {
    
    @ApiModelProperty(value = "套餐类型", required = true, example = "monthly")
    @NotBlank(message = "套餐类型不能为空")
    private String type;
    
    @ApiModelProperty(value = "套餐名称", required = true, example = "连续包月")
    @NotBlank(message = "套餐名称不能为空")
    @Size(max = 50, message = "套餐名称长度不能超过50个字符")
    private String name;
    
    @ApiModelProperty(value = "套餐价格", required = true, example = "69.00")
    @NotNull(message = "套餐价格不能为空")
    @DecimalMin(value = "0.01", message = "套餐价格必须大于0")
    @DecimalMax(value = "9999.99", message = "套餐价格不能超过9999.99")
    private BigDecimal price;
    
    @ApiModelProperty(value = "原价", required = true, example = "69.00")
    @NotNull(message = "原价不能为空")
    @DecimalMin(value = "0.01", message = "原价必须大于0")
    @DecimalMax(value = "9999.99", message = "原价不能超过9999.99")
    private BigDecimal originalPrice;
    
    @ApiModelProperty(value = "套餐描述", example = "600积分 + 对话助理无限 + 生图加速")
    @Size(max = 500, message = "套餐描述长度不能超过500个字符")
    private String description;
    
    @ApiModelProperty(value = "时长（天数）", required = true, example = "30")
    @NotNull(message = "时长不能为空")
    @Min(value = 1, message = "时长必须大于0天")
    @Max(value = 3650, message = "时长不能超过3650天")
    private Integer duration;
    
    @ApiModelProperty(value = "是否推荐", example = "true")
    private Boolean recommended = false;
    
    @ApiModelProperty(value = "状态", example = "1")
    @Min(value = 0, message = "状态值无效")
    @Max(value = 1, message = "状态值无效")
    private Integer status = 1;
}
